<?php
$arr = array(
     array(
        'uid' => 4,
        'live' => 16
    ),
    array(
        'uid' => 7,
        'live' => 16
    ),
    array(
        'uid' => 8,
        'live' => 16
    ),
    array(
        'uid' => 9,
        'live' => 16
    ),
    array(
        'uid' => 9,
        'live' => 20
    ),
);

$arr = [
    'a' => 16,
    'b' => 16,
    'c' => 16,
    'd' => 16,
    'e' => 20,
    ];

/**
 * uasort 排序索引不会被重置,但只能实现单个字段排序
 * 为了相同的值如何保持排序不变
 * 自定义函数返回值
 * 	小于 0 的整数：(不交换位置) 表示 $a 在排序后应该出现在 $b 之前。
•	等于 0 的整数：表示 $a 和 $b 是相等的，它们的顺序可以保持不变。
•	大于 0 的整数：(交换位置)表示 $a 在排序后应该出现在 $b 之后。
 */

//升序
uasort($arr, function($a, $b) {
     //return $a <=> $b;
      //return $a < $b ? -1 : 1;   //升序  相同的值返回1 会交换位置 表示小的元素排在前面,大的元素排在后面
//    return  $a <= $b ? -1 : 1;   //升序 相同的值返回-1 不交换位置
      return $b < $a ? 1 : -1;      //升序  相同的值返回-1 不会交换位置
//      return   $a > $b ? 1 : -1;      //升序  相同的值返回-1 不会交换位置
//      return $b > $a ? 1 : -1;     //降序  相同的值返回-1 不交换位置  表示大的元素排在前面,小的元素排在后面
});
echo "<pre>";
print_r($arr);
echo "</pre>";